#include <iostream>
using namespace std;

const int N = 100;
typedef struct SqStack
{
    int data[N];
    int top;
} SqStack;
void init(SqStack &S)
{
    S.top = -1;
}
bool stackEmpty(SqStack S)
{
    return S.top == -1;
}
bool push(SqStack &S, int x)
{
    if (S.top == N - 1)
        return false;
    S.data[++S.top] = x;
    return true;
}
bool pop(SqStack &S, int &x)
{
    if (S.top == -1)
        return false;
    x = S.data[S.top--];
    return true;
}
bool getTop(SqStack &S, int &x)
{
    if (S.top == -1)
        return false;
    x = S.data[S.top];
    return true;
}
int main(int argc, char const *argv[])
{
    SqStack S;
    init(S);
    for (int i = 0; i < 5; i++)
        push(S, i);
    for (int i = 0; i < S.top; i++)
    {
        cout << S.data[i] << " ";
    }

    return 0;
}
